package com.bandaotixi.cashier.api.common.result;

import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * 响应码枚举
 * <p>
 * 参考阿里巴巴开发手册响应码规范
 * 00000 正常
 * A**** 用户端错误
 * B**** 系统执行出错
 * C**** 调用第三方服务出错
 *
 **/
@AllArgsConstructor
@NoArgsConstructor
public enum ResultCode implements IResultCode, Serializable {

    SUCCESS("200", "一切ok"),
    USER_REQUEST_PARAMETER_ERROR("A0001", "用户请求参数错误"),
    INVALID_USER_INPUT("A0002", "无效的用户输入"),
    REQUEST_REQUIRED_PARAMETER_IS_EMPTY("A0003", "请求必填参数为空"),
    PARAMETER_FORMAT_MISMATCH("A0004", "参数格式不匹配"),
    ACCESS_UNAUTHORIZED("A0005", "访问未授权"),
    SYSTEM_ERROR("B0001", "系统执行出错"),
    INTERFACE_NOT_EXIST("C0001", "接口不存在"),
    ;


    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }

    private String code;

    private String msg;

    @Override
    public String toString() {
        return "{" +
                "\"code\":\"" + code + '\"' +
                ", \"msg\":\"" + msg + '\"' +
                '}';
    }


    public static ResultCode getValue(String code) {
        for (ResultCode value : values()) {
            if (value.getCode().equals(code)) {
                return value;
            }
        }
        return SYSTEM_ERROR; // 默认系统执行错误
    }
}
